#include <windows.h>
#include <stdio.h>
#include <string>
#include <vector>
#include <map>
#include <cctype>
#include <algorithm>
#include <stdarg.h>

using namespace std;

enum System
{
    Android = 1,
    Linux = 2,
    Windows = 3,
    Mac = 4,
    iPhone = 5,
    Other = 6
};

class CGIAPI
{
public:
    CGIAPI();

    // CGIAPI::httpHeader(method)
    // 设置返回的HTTP头
    void httpHeader(const char* value1);

    // CGIAPI::addJavaScript(argv, ...)
    // 向html引入js
    void addJavaScript(int argv,...);

    // CGIAPI::addStyle(argv, ...)
    // 向html引入css
    void addStyle(int argv,...);

    // CGIAPI::htmlHeadBegin(title, chaeset)
    // 输出html标签开头
    void htmlHeadBegin(const char* title1,const char* charset1);

    // CGIAPI::htmlHeadEnd()
    // 输出html标签结尾
    void htmlHeadEnd();
    
    // CGIAPI::getAllParam()
    // 将Request-URI标识/实体的的信息取回并放入map<string,string>
    map<string,string> getAllParam();

    // CGIAPI::getAgent()
    // 获得User Agent
    string getAgent() {return m_agent;}

    // CGIAPI::data()
    // 获得Request-URI标识/实体的信息
    string data() {return m_data;}

    // CGIAPI::getSystem()
    // 获得主机系统
    int getSystem() {return m_system;}
    
    string operator[](string param)
    {
        map<string,string> m = getAllParam();
        return m.at(param);
    }

private:
    string m_method;
    string m_data;
    string m_agent;
    int m_system;
    
protected:
    vector<string> split(const char *s1, const char *s2);
};